<?php

use PcHome\Service\CmsService;

/**
 * 获取指定id的单页面
 * @param int $id 页面的id
 * @return array 返回符合条件的页面
 */
function x_sql_one_page($id) {
    return CmsService::onepage($id);
}


/**
 * 返回指定分类
 * @param int $cate_id 分类id
 * @return array 返回符合条件的分类
 */
function x_get_cate_info($cate_id){
    return CmsService::cate($cate_id);
}

/**
 * 检查用户对某个url,内容的可访问性，用于记录如是否赞过，是否访问过等等;开发者可以自由控制，对于没有必要做的检查可以不做，以减少服务器压力
 * @param number $object 访问对象的id,格式：不带前缀的表名+id;如posts1表示xx_posts表里id为1的记录;如果object为空，表示只检查对某个url访问的合法性
 * @param number $count_limit 访问次数限制,如1，表示只能访问一次
 * @param boolean $ip_limit ip限制,false为不限制，true为限制
 * @param number $expire 距离上次访问的最小时间单位s，0表示不限制，大于0表示最后访问$expire秒后才可以访问
 * @return true 可访问，false不可访问
 */
function x_check_user_action($object="",$count_limit=1,$ip_limit=false,$expire=0){
    $action_log_model=M("action_log");
    $action = MODULE_NAME."-".CONTROLLER_NAME."-".ACTION_NAME;
    $userid = x_get_user_id();

    $ip = get_client_ip(0,true);//修复ip获取

    $where = array('user_id' => $userid, 'action' => $action,'object' => $object);
    if($ip_limit){
        $where['ip']=$ip;
    }

    $find_log = $action_log_model->where($where)->find();

    $time=time();
    if ($find_log) {


        //次数限制
        if($count_limit > 0 && $find_log['count'] >= $count_limit){
            return false;
        }

        //时间限制
        if($expire > 0 && ($time-$find_log['last_time']) < $expire){
            return false;
        }

        $action_log_model->where($where)->save(array("count"=>array("exp","count+1"),"last_time"=>$time,"ip"=>$ip));

    }else{
        $action_log_model->add(array("user_id"=>$userid,"action"=>$action,"object"=>$object,"count"=>array("exp","count+1"),"last_time"=>$time,"ip"=>$ip));
    }

    return true;
}

//////////////////////////////////////////////////////////////////////////////////
